#ifndef GAMEPLAY_BOARD_H
#define GAMEPLAY_BOARD_H


#include "SDL.h"
#include <vector>
using namespace std;
#include "Engine/Synaptic/Misc.h"

namespace Gameplay { class Piece; } 

namespace Gameplay {

// Board class represents the state of the actual board and if a given
// piece fits or no in the desired position
class Board {
  private:
	const Sint16 width; 
	const Sint16 height; 
	vector<Sint16> fixedPieces; 
	vector<Sint16> givenPieces; 
	Sint16 piecesLeft; 

  public:
	Board(unsigned int w, unsigned int h); 
	virtual ~Board(); 
	bool fit(const Piece & piece); 
	Sint32 nextPiece(); // Gives a new ID for a new piece
	bool canMove(const Piece & piece, Misc::Direction direction); 
};

} // namespace Gameplay
#endif
